home *** CD-ROM | disk | FTP | other *** search
/ Java Programmer's Toolkit / Java Programmer's Toolkit.iso / editors / tde210 / tde.doc < prev    next >
Encoding:
Text File  |  1993-12-02  |  60.6 KB  |  1,386 lines

  1.          NEW-TDE - Modified by Angelo Besani for SWEET Technologies 
  2.  
  3.  
  4.  
  5.                        TDE, the Thomson-Davis Editor
  6.                                 Version 2.10
  7.                              November 13, 1992
  8.                                 Frank Davis
  9.  
  10.  
  11. Description:
  12.  
  13.   TDE is a simple, public domain, multi-file/multi-window text editor
  14.   written for IBM PCs and close compatibles.  TDE is suitable for editing
  15.   batch files, text files, and various computer language source code
  16.   files.  The only limit on the number and size of files that TDE can
  17.   handle is the amount of conventional memory.  Likewise, the only limit
  18.   on the number of windows is the amount of conventional memory.  There is
  19.   no preset maximum number of files or windows that may be open at any one
  20.   time.
  21.  
  22.  
  23. Introduction:
  24.  
  25.   I work with data files, computer source code, and output files quite a
  26.   bit.  Most of the features in TDE are related, in some way, to handling
  27.   those types of files.  The various window and cursor commands in TDE are
  28.   really nice for comparing and editing source code or output files.  A
  29.   good collection of block commands is available for use on source code
  30.   and formatted data files.  For what little word processing I do, TDE has
  31.   a few simple commands for formatting text and paragraphs.  In short, TDE
  32.   contains most of the features that I use most of the time in an easy to
  33.   use, easy to remember, and easy to configure editor.  I hope you find
  34.   TDE as easy to use for most of your routine editing as me.
  35.  
  36.  
  37. Usage:
  38.  
  39.   At the command line type:
  40.  
  41.         tde [ [-f search_pattern] file name(s)]
  42.  
  43.   For example:
  44.  
  45.         tde
  46.         tde foo.bar
  47.         tde c:\c60\TDE\main.c
  48.         tde *.c  \qc25\TDE\*.h
  49.         tde foo.bar  foobar  f*  foo.*  f??b??
  50.  
  51.       * * *  to search files for a pattern and load matches  * * *
  52.  
  53.         tde  -f  find_me_load_me  foo.*
  54.         tde  -f  find_me_load_me  foo.*  *.bar
  55.  
  56.  
  57.   If you don't enter a file name at the command line, TDE will prompt you
  58.   for a file name.  If the file does not exist, TDE starts out with an
  59.   empty file with the file name you just entered.
  60.  
  61.   TDE will handle files as large 440k.  If you try to edit a file larger
  62.   than 440k, only the first portion of the file is loaded into TDE.  With
  63.   DOS 5.0, you can edit files as large as 485k if you load DOS high.  TDE
  64.   will handle lines as long as 1040 characters.  Only the first 1040
  65.   characters of long lines are handled.
  66.  
  67.  
  68. Oops, 2.1 has a booboo.
  69.  
  70.    With tabs inflated, the STREAM block function did not handle some block
  71.    operations correctly.  Version 2.10 corrects that error.
  72.  
  73.    While I was under the hood, I modified the find functions.  Now,
  74.    finding a string is even faster.  See findrep.c for details.
  75.  
  76.  
  77. What's new:
  78.  
  79.  
  80.                       New features in TDE 2.1 include:
  81.  
  82.         SetLtabs                = ^Tab
  83.         SetPtabs                = ^Tab, prompts for both Ltabs and Ptabs
  84.         BlockCompressTabs       = #@C
  85.         BlockIndentTabs         = #@I
  86.         ToggleTabInflate        = #@T
  87.         DefineDiff              = #F7
  88.         RepeatDiff              = F7
  89.         -f pattern files        = command line option to define S&S
  90.         DefineSearchAndSeize    = #F12
  91.         RepeatSearchAndSeize    = F12
  92.         SwapBlock               = #@S
  93.         Sort sequence           = Config file
  94.  
  95.  
  96.                              Renamed functions:
  97.  
  98.         ReplaceString           == ReplaceForward || ReplaceBackward
  99.         PanUp                   == FixedScrollUP
  100.         PanDown                 == FixedScrollDn
  101.         PanLeft                 == ScrollLeft
  102.         PanRight                == ScrollRight
  103.  
  104.  
  105.   The new tab functions that make TDE more "standard" are ltabs, ptabs,
  106.   and TabInflate.  Logical tabs define the tab stops on the screen.
  107.   Physical tabs are the actual tab characters embedded in text.  The most
  108.   common setting for physical tabs is 8.  The setting for logical tabs
  109.   varies greatly depending on personal taste.  Indentation styles also
  110.   vary with personal taste.  An easy way to change one indentation style
  111.   to another is to compress leading space to physical tabs.  Then, the
  112.   physical tab width may changed to the desired indentation style and
  113.   expanded.  Displaying tabs without physically expanding them is called
  114.   TabInflate in TDE.  TabInflate treats tab characters on the screen as
  115.   space.  To give you an idea of tab positions, the display EOL function
  116.   (Control-F2) displays inflated tab positions.
  117.  
  118.   At work, we may have several versions of one program.  For me, I find it
  119.   hard to remember which changes were made to which source files.  There
  120.   are several diff utilities that can point out differences, but I
  121.   probably need the edit those differences anyway.  The diff options I
  122.   find most useful are:  setting the diff start, ignore leading space,
  123.   ignore all space, and ignore blank lines.  A non-standard diff option
  124.   that appeals to writers is ignore end of line, because diffing a
  125.   paragraph with only margin changes will produce no diffs.  The new diff
  126.   function in TDE prompts for the windows and the starting diff options.
  127.   Once the diff is defined, press the RepeatDiff key at any time to find
  128.   the next diff.  With cursor sync turned on, it's easy to move the
  129.   cursors to begin the next diff.  Any two visible windows may be diffed.
  130.   You may even diff windows in the same file, which is really nice for
  131.   comparing similar functions, data, or text in separate areas of a file.
  132.  
  133.   After using the EditNextFile function (Alt-F4) for a while, it seemed to
  134.   lack a very useful feature.  The reason I use EditNextFile is to search
  135.   files for a common blocks, structures, strings, etc...  Being that TDE
  136.   has a find function, might as well let TDE search and load files that
  137.   have the matching string.  When testing the new function, I found my
  138.   ownself needing a command line "Search and Seize" and a function key
  139.   "Search and Seize."  Just give SearchAndSeize a pattern to search for
  140.   and the files you want to search.  SearchAndSeize will load only those
  141.   files that contain the search pattern.  S&S turned out really nice.
  142.   On my system, S&S can search 10 100K files (10 x 100k = 1 Megabyte) in
  143.   10 seconds.  Your mileage may vary.
  144.  
  145.   I can't speak, read, or write English too very good and I can't speak
  146.   any other language at all.  So, I felt qualified to add sort sequences
  147.   for non-English languages:  English, Esperanto, Finnish, French, German,
  148.   and Swedish.  You may customize the sort sequence in tde.cfg.  Actually,
  149.   Pierre Jelenc sent in the sort sequences for those languages.  I
  150.   probably messed them up, so if the sort sequences don't do right then
  151.   blame me.  Examples of the sort sequences are at the bottom of the
  152.   config file.  Incidentally, Pierre is developing a general purpose,
  153.   language independent sort program.  Pierre's sort program will handle a
  154.   much wider range of alphabets and languages than TDE.
  155.  
  156.   The new SwapBlock function works only with BOX blocks.  Every once in a
  157.   while, I need to swap rows of numbers or areas of text.  The width of
  158.   the swap area assumed to be the width of the BOX.
  159.  
  160.  
  161.                    New features in TDE 2.0e include:
  162.  
  163.                       BlockRot13           = #@<
  164.                       BlockFixUUE          = #@>
  165.                       BlockEmailReply      = #@?
  166.  
  167.   ROT13 is an informal, voluntary standard used on the networks to send
  168.   text that some may consider inappropriate.  ROT13 is a convenient way
  169.   that allows one to choose whether or not to read the material.  To read
  170.   the material, one has to make a conscious and deliberate effort to
  171.   convert the text into a readable form.  ROT13 is also used to hide
  172.   answers to questions, puzzles, etc...  BlockRot13 alternately converts
  173.   ROT13 alpha characters into normal text and hides normal alpha
  174.   characters in ROT13.
  175.  
  176.   The most common default for sending large binary files across network
  177.   nodes and gateways uses UUencoding; however, some characters in the
  178.   UUencode set do not make the trip correctly.  On IBM mainframes, the
  179.   EBCDIC to ASCII translation don't do right.  Although I don't fully
  180.   understand why, but, three characters need to be fixed when receiving
  181.   text e-mail files, which include UUencoded files, from IBM mainframes.
  182.   BlockFixUUE will fix the three characters in a marked block.  The three
  183.   characters that need to be fixed in text (as opposed to binary) e-mail
  184.   files received from IBM mainframes are:
  185.  
  186.                   Hex               Decimal             ASCII
  187.  
  188.        1)     5d  ==>  7c         93  ==>  124        ]  ==>  |
  189.        2)     d5  ==>  5b        223  ==>   91        ╒  ==>  [
  190.        3)     e5  ==>  5d        229  ==>   93        σ  ==>  ]
  191.  
  192.  
  193.   When sending a reply to an e-mail, it is customary to prepend any lines
  194.   from the original e-mail with the ">" character.  BlockEmailReply
  195.   prepends "> " to the original line in an e-mail and prepends ">" to all
  196.   replies to replies in a LINE block.
  197.  
  198.  
  199.  
  200.                    New features in TDE 2.0 include :
  201.  
  202.          DateTimeStamp                           = ^2 or Control-@ sign
  203.          SortBoxBlock, ascending or descending   = @S
  204.          ToggleSmartTabs                         = @Tab
  205.          Dynamic left margin for writers         = @V
  206.          Pause, useful with macros               = ^P
  207.          Recursive macros
  208.          Support for Control-Break to stop recursive macros,
  209.               sorting, search/replacing, some block operations,
  210.               formatting text or paragraph, and printing.
  211.          Support for lines as long as 1040 characters.
  212.          Improved undo buffer management.  There is now room for
  213.               the last 10 by 1040  or  130 by 80 deleted lines.
  214.          Gathered all prompts into one header file to aid translation
  215.               of prompts and documentation into other languages.
  216.          Configuration file, option 6 in tdecfg.exe.
  217.  
  218.  
  219.   The date-time stamp was added to TDE because some users talk with field
  220.   units over the phone and the event needs to be date and time stamped.
  221.   Users may customize the date to local preferences, eg MM-DD-YY or
  222.   DD-MM-YY.  The time stamp may use either 12 hour or 24 hour form.
  223.  
  224.   Every once in a while, I need to sort data, names, etc..., in some of my
  225.   files.  The SortBoxBlock function was added to sort lines according to
  226.   the keys in a box block.  The keys may be sorted ascending or
  227.   descending, while the IGNORE/MATCH toggle determines whether case is
  228.   significant.  To sort multiple columns, start the sort with the least
  229.   significant key first.
  230.  
  231.   I also wrote a handler for the Control-Break interrupt, 0x1B.  On IBM
  232.   compatible PCs, the Control-Break key generates an interrupt via
  233.   hardware.  By writing a Control-Break interrupt handler, a user can
  234.   immediately gain control of a run-a-way recursive macro, printing job,
  235.   most box block operations, expanding tabs, trimming space from line
  236.   blocks, formatting a paragraph or text, search/replace, or a sort
  237.   operation.  Although one may trap Control-C, which is a software
  238.   generated interrupt, there is no telling when the operating system will
  239.   turn control over to a Control-C handler.  One may gain immediate
  240.   control with the Control-Break key, however.
  241.  
  242.   The undo-buffer space and management was greatly enhanced.  There is now
  243.   room for over 10k of deleted text in the buffer.  Users may now get back
  244.   entire functions that may have been deleted.  There is room for 130 by
  245.   80 or 10 by 1040 character lines in the new undelete buffer.
  246.  
  247.   All of the prompts in TDE were gathered into one header file to aid the
  248.   translation of documentation as well as the user prompts into other
  249.   languages.  Pierre Jelenc, pcj1@cunixf.cc.columbia.edu and a member of
  250.   the Foreign Language Education Forum (FLEFO) on CompuServe, has
  251.   translated the documentation and has created configuration files for
  252.   several languages.  If you need a non-English version of TDE, contact
  253.   Pierre to find out if he has a version of TDE for you.
  254.  
  255.   A configuration file was added so that users may define all function
  256.   keys, modes, and colors from a configuration file.  Users may also
  257.   define macros in the configuration file.  Those who need to assign ASCII
  258.   and Extended ASCII character to unused function keys will find this
  259.   extremely useful.  Some alphabets need letters with all kinds of accent
  260.   marks.
  261.  
  262.  
  263.                    New features in TDE 1.5 include :
  264.  
  265.                     Ruler                     = @R
  266.                     Block trim trailing       = @T
  267.                     User defined macros:
  268.                        Record macro           = @F3
  269.                        Save macros to file    = #F1
  270.                        Load macros from file  = #F3
  271.                        Clear macro buffer     = ^ESC
  272.                     Critical error handler
  273.  
  274.   If by accident you forget to put a diskette in a floppy drive and try to
  275.   save a file or if you forget to turn on the printer before printing a
  276.   block or file, a critical error occurs.  That kind of error is the
  277.   infamous Abort, Retry, Ignore thing.  A routine was written to give some
  278.   information on the kind and the location of those errors when they
  279.   occur.  The TDE critical error handler gives you all kinds of info and
  280.   then prompts you for a response.  The timeout for critical errors varies
  281.   quite a bit.  Some timeouts may take a couple of minutes.
  282.  
  283.   When I "work" at the USDA, I often need to create or massage formatted
  284.   data files.  Also, a lot of engineers and scientists at the USDA program
  285.   in FORTRAN and the source code needs to be in a certain format.  When
  286.   working with those types of files, it is really useful to have a ruler
  287.   that explicitly shows which column the cursor is in.  The new ruler in
  288.   TDE shows margins, column numbers, and a column pointer.
  289.  
  290.  
  291.  
  292.                    New features in TDE 1.4 include :
  293.  
  294.               Split screen vertically            = F8
  295.               Number box block                   = Alt+N
  296.               Directory list                     = Alt+F1
  297.  
  298.   Also added in tdecfg was a choice of cursor styles and a switch for .bak
  299.   files.  Both of those options are in the mode section of tdecfg.
  300.  
  301.  
  302.  
  303.                           <CR><LF> or <LF> at eol
  304.  
  305.   The functions that write files were expanded to allow you to choose
  306.   whether you want to write a <CR><LF> or just a <LF> at the end of line.
  307.   Some programs look for just the <LF> at the eol while others want the
  308.   <CR><LF> pair at the eol.  TDE has no trouble reading either style but
  309.   allows you to specify the output style.  You may change the style by
  310.   pressing the ToggleCRLF function key or by using tdecfg to set the
  311.   default.  Here's a little diagram that may help explain the new
  312.   functions better than I can write.
  313.  
  314.  
  315.                                                             Output
  316.         Input        TDE's internal representation          Toggle
  317.  
  318.          files       ┌────────────────────────────┐          files
  319.          with        │ tde will read files with   │          with
  320.        <CR><LF> ====>│ lines that terminate in    │ =====> <CR><LF>
  321.         at eol       │ either <CR><LF> or <LF>.   │         at eol
  322.                      │                            │
  323.                      │                            │
  324.          files       │ Internally, all lines end  │          files
  325.          with        │ with the <LF> character.   │          with
  326.          <LF>  =====>│                            │ =====>   <LF>
  327.         at eol       └────────────────────────────┘         at eol
  328.  
  329.  
  330.  
  331.  
  332. Editor fields and information lines:
  333.  
  334.  
  335.                                Sample TDE screen
  336.  
  337.  
  338.          ┌─── File number - each window opened to same file has same number
  339.          │ ┌─── Window letter
  340.          │ │
  341.          │ │    ┌─── Dirty file indicater - asterisk
  342.          │ │    │ ┌─── File name
  343.          │ │    │ │                    ┌──── File attributes
  344.          │ │    │ │                    │    ┌──── Total number of lines in file
  345.          │ │    │ │                    │    │                  ┌─── line:column
  346.                                                          
  347.       ┌──────────────────────────────────────────────────────────────┐
  348.       │    The first line on the screen contains file information    │
  349.       ├──────────────────────────────────────────────────────────────┤
  350.       │........1.....     Optional ruler line    ......7........8│
  351.       ├──────────────────────────────────────────────────────────────┤
  352.       │                                                              │
  353.       │                                                              │
  354.       │                          File area                           │
  355.       │                                                              │
  356.       │                                                              │
  357.       │                                                              │
  358.       ├──────────────────────────────────────────────────────────────┤
  359.       │                 Editor modes and information                 │
  360.       └──────────────────────────────────────────────────────────────┘
  361.                                                          Insert
  362.         │   │    │    │    │    │    │     │     │     │    │     └─ Overwrite
  363.         │   │    │    │    │    │    │     │     │     │    └───── ^Z at eof?
  364.         │   │    │    │    │    │    │     │     │     └───── trim trailing
  365.         │   │    │    │    │    │    │     │     │     space at eol, T = TRUE
  366.         │   │    │    │    │    │    │     │     │
  367.         │   │    │    │    │    │    │     │     └───── CRLF or LF at eol?
  368.         │   │    │    │    │    │    │     └───── word wrap indicator
  369.         │   │    │    │    │    │    └───── Sync cursor in all windows?
  370.         │   │    │    │    │    └───── Ignore / Match search case?
  371.         │   │    │    │    └───── Indent mode?
  372.         │   │    │    └───── Tab modes = Smart/Fixed, In/Deflate, and ptabs
  373.         │   │    └───── Available memory for editing files
  374.         │   └───── Total number of windows, including hidden windows
  375.         └───── Total number of open files
  376.  
  377.  
  378.  
  379. Multiple keys:
  380.  
  381.   I use the following abbreviated key definitions throughout this file:
  382.  
  383.                 ^ = Control       # = Shift       @ = Alt
  384.  
  385.   For example, ^F5 means press and hold the Control key and then press F5
  386.   while holding down the Control key.
  387.  
  388.  
  389. Cursor movement:
  390.  
  391.                             101 Keyboard overview
  392.  
  393.             Cursor keys                               Keypad keys
  394.         ┌─────┬─────┬─────┐                ┌───────┬───────┬───────┬───────┐
  395.         │ Ins │Home │PgUp │                │NumLock│Grey / │Grey * │Grey - │
  396.         ├─────┼─────┼─────┤                ├───────┼───────┼───────┼───────┤
  397.         │ Del │ End │PgDn │                │ Home  │  Up   │ Pg Up │ Grey  │
  398.         └─────┴─────┴─────┘                ├───────┼───────┼───────┤   +   │
  399.                                            │ Left  │Center │ Right │       │
  400.               ┌─────┐                      ├───────┼───────┼───────┼───────┤
  401.               │ Up  │                      │  End  │ Down  │ Pg Dn │ Grey  │
  402.         ┌─────┼─────┼─────┐                ├───────┴───────┼───────┤       │
  403.         │Left │Down │Right│                │     Ins       │  Del  │ Enter │
  404.         └─────┴─────┴─────┘                └───────────────┴───────┴───────┘
  405.  
  406.                                                           
  407.     If you like using these grey                   With Num Lock off,
  408.      cursor keys, these function               you can probably guess most
  409.       assignments are for you.                of these function assignments.
  410.  
  411.           Grey cursor keys                            Keypad keys
  412.  
  413.  Up     - move cursor up                    Home   - toggle col 1 & beg of line
  414.  Down   - move cursor down                 ^Home   - first line in window
  415.  Left   - move cursor left                  Pg Up  - page up
  416.  Right  - move cursor right                ^Pg Up  - goto first page in file
  417. ^Up     - scroll cursor up                  Center - move to center of window
  418. ^Down   - scroll cursor down               ^Center - line to center of window
  419. ^Left   - cursor to previous word           End    - last character in line
  420. ^Right  - cursor to next word              ^End    - last line in window
  421. @Up     - pan up                            Pg Dn  - page down
  422. @Down   - pan down                         ^Pg Dn  - goto last page in file
  423. @Left   - pan left                          Ins    - toggle insert mode
  424. @Right  - pan right                         Del    - delete character
  425. @PgUp   - horizontal page left             ^Del    - stream delete character
  426. @PgDn   - horizontal page right             Grey - - scroll screen up
  427. ^#Left  - pan left                          Grey + - scroll screen down
  428. ^#Right - pan right                        ^Grey - - pan up
  429.                                            ^Grey + - pan down
  430.                                              Enter - Insert line and move down
  431.                                             #Enter - 1st char in next line
  432.                                             ^Enter - column 1 in next line
  433.  
  434.  
  435. Function Keys:
  436.  
  437.   I tried to use some logical order when I assigned functions to the
  438.   function keys.  I use a 101 keyboard most of the time, so it should be
  439.   easy to see the logical function grouping with it.  The function keys
  440.   on a 101 keyboard are placed along the top of the keyboard.  Functions
  441.   are arranged as follows:
  442.  
  443.  
  444.         Help    File              Find/Replace            Window
  445.               Functions              &  Diff             Commands
  446.          F1  F2  F3  F4          F5  F6  F7  F8          F9  F10  F11  F12
  447.  
  448.  
  449.    F1 = Instantaneous Help
  450.  
  451.   @F1 = Directory List
  452.         List the contents of a directory or matching files.  At the
  453.         prompt, press enter to list all files in the current directory or
  454.         enter any valid subdirectory name, file name, or wild card
  455.         characters.  You don't have to put a *.* at the end of a
  456.         subdirectory name; the directory list function adds those wild
  457.         card characters to subdirectory names as a default.  A '\' is
  458.         added to the end of subdirectory names in the file list.  To list
  459.         files in other directories, just move the cursor to the desired
  460.         subdirectory name and press enter.  When you see ..\ in the
  461.         directory list, the double periods represent the parent of the
  462.         current directory.  The .\ represents the current directory.  You
  463.         may move up and down the directory tree by selecting the parent or
  464.         childrens of the current directory.
  465.  
  466.  
  467. File Functions:
  468.  
  469.    F2 = Save file
  470.         Saves all changes made to file.  Existing file is overwritten by
  471.         the new file.  It does not prompt for a new file name -
  472.         automatically assumes you want to overwrite the old file.
  473.  
  474.    F3 = Quit file
  475.         Abandons any changes made in the file and closes or kicks the file
  476.         out of the current window.  If you are editing multiple files or
  477.         have multiple windows, TDE searches for any invisible files to
  478.         display in the current window.  If no invisible windows are found,
  479.         TDE combines windows.  If this is the only file being edited, F3
  480.         quits TDE.  If you made any changes to the file, it asks you if
  481.         you want to abandon them.  You can create an invisible window when
  482.         you load in a file over the current file.  Nothing happens to the
  483.         invisible file or window - you just can't see it.
  484.  
  485.         When I added vertical windows, this routine became a LOT more
  486.         complicated.  To keep things reasonably sane, let's only close
  487.         windows that have three common edges, eg.
  488.  
  489.                         ┌──────┬──────────┐
  490.                         │      │    no    │
  491.                         │      ├─────┬────┤
  492.                         │      │yes1 │yes1│
  493.                         │  no  ├─────┴────┤
  494.                         │      │   yes2   │
  495.                         │      ├──────────┤
  496.                         │      │   yes2   │
  497.                         └──────┴──────────┘
  498.  
  499.         Windows with 'no' cannot be closed.  Windows with 'yes' can be
  500.         combined with windows that have the same yes number.
  501.  
  502.  
  503.    F4 = File (save and quit)
  504.         This function is a combination of Save and Quit (F2 & F3 above).
  505.  
  506.    #F2 = Save as
  507.         If you don't want to overwrite the original file but you want to
  508.         save the contents of the current file, you may save the file under
  509.         a different file name.  This function prompts you for a file name
  510.         to save the changes (press escape to abort).
  511.  
  512.    #F4 = Edit new file
  513.         To bring another file into the editor, use this function.  It
  514.         loads the file into the current window and previous window becomes
  515.         invisible.  You can even load several copies of the same file.  I
  516.         like this because I often need to refer back to the original
  517.         unchanged file on disk.  When I make a booboo in a file, which is
  518.         quite often, I don't necessarily want to quit and start over; I
  519.         just want to get back the part that I messed up.  It is really
  520.         easy to mark the orginal text in a block and copy it to the place
  521.         where I made a booboo.  Each time a file is loaded into TDE, it is
  522.         treated as a different file.
  523.  
  524.    @F2 = Set file attributes
  525.         Change the attributes of a file.  Attributes are:  A = Archive,
  526.         S = System, H = Hidden, R = Read-Only.  You can change the
  527.         attributes of a file so that read-only files can be edited.  To
  528.         edit a read-only file:  1) edit the file, 2) change the file
  529.         attributes to archive, 3) save the changes made in the file, 4)
  530.         change the file attributes back to read-only.
  531.  
  532.    @F4 = Edit next file
  533.         If you type multiple file names or type wildcard characters on the
  534.         command line, press this key to bring in the next file or the next
  535.         matching file into the editor.
  536.  
  537.    -f pattern file(s)         (Command line DefineSearchAndSeize)
  538.        or
  539.    #F12 = DefineSearchAndSeize
  540.         Search and Seize will search files for a pattern and only load
  541.         those files that contain pattern.  The command line Define Search
  542.         and Seize works a little differently than the function key S&S.
  543.         On the command line, spaces are interpretted by DOS as delimiters.
  544.         Therefore, the search pattern on the command line can not have
  545.         any embedded spaces.  On the other hand, the Fkey S&S search
  546.         pattern may contain most any character.
  547.  
  548.         Defining S&S also defines the search pattern.  When a file is
  549.         loaded, press RepeatFind to go to the next occurence of pattern.
  550.         There are actually two find structures - one for the standard
  551.         search function and one for S&S.   Defining S&S also defines
  552.         the search function.  However, redefining the standard search
  553.         structure has no effect on the S&S pattern.  The S&S pattern
  554.         remains defined until another S&S redefines it.
  555.  
  556.     F12 = RepeatSearchAndSeize
  557.         After S&S has been defined, press this key to seize the next file
  558.         for pattern.
  559.  
  560.  
  561. Macros:
  562.  
  563.    @F3 = Macro record
  564.         This key toggles macro record off and on.  A flashing "Recording"
  565.         is displayed in the lite bar, so it shouldn't be too difficult to
  566.         tell when record is on.  This function assigns a keystroke or a
  567.         series of keystrokes to an unused function key.  Keystrokes are
  568.         played back for some prompts.  Prompts that require the user to
  569.         input a name or pattern are played back.  Prompts that require the
  570.         user to enter a choice, "Overwrite existing file (y/n)?" for
  571.         example, are not played back.
  572.  
  573.         There is room for 1024 keystrokes in the macro buffer.  There are
  574.         no restrictions on the length of a single macro.  If you want, you
  575.         may define one macro that contains 1024 keystrokes.  When TDE
  576.         terminates, all macros definitions disappear.  Macro definitions
  577.         are temporary.  If you want to reuse macros that are defined
  578.         during an editing session, they need to be saved before you exit
  579.         TDE.
  580.  
  581.                              Recursive Macros
  582.  
  583.         "Recursive" macros are supported.  Only one level of recursion is
  584.         supported in TDE.  Here's a simple example of a recursive macro:
  585.  
  586.                         Alt-F3    = turn macro record on
  587.                         Alt-5     = assign the recording to Alt-5
  588.                         Down      = move cursor down a line
  589.                         Alt-5     = call the macro we just defined
  590.                         Alt-F3    = turn macro record off
  591.  
  592.         Enter this macro and press Alt-5 to see what a recursive macro
  593.         does.  Recursive macros repeatedly execute themselves until an
  594.         error condition occurs, which usually happens when the end of file
  595.         is reached.  I often use recursive macros to delete certain lines
  596.         in a file or to rearrange the fields of a formatted data file.
  597.  
  598.         Each editor function in TDE returns a code to the macro processor
  599.         that indicates whether or not an error occured.  Here are some
  600.         conditions that generate an error:  attempting to move the cursor
  601.         past the end of file or behind the start of the file, trying to
  602.         add too many characters in a line, attempting block operations
  603.         with no marked block, etc...
  604.  
  605.         One interesting phenomenon about recursive macros is that a macro
  606.         can be defined that never terminates.  The simplest
  607.         non-terminating macro definition in TDE is:
  608.  
  609.                   Alt-F3  = turn macro record on
  610.                   Alt-7   = assign the recording to Alt-7
  611.                   Alt-7   = call the macro we just defined
  612.                   Alt-F3  = turn macro record off
  613.  
  614.         This a+7 macro carries out no instructions.  The only thing this
  615.         macro does is call itself.  In a perfect world, this macro will
  616.         execute forever.  There are lots of ways to create non-terminating
  617.         recursive macros.  Be creative and try creating a few non-
  618.         terminating recursive macros yourself.  With several different
  619.         sizes and shapes of horizontal and vertical windows on the screen
  620.         and with cursor sync toggled on, you can create some really neat
  621.         macros using cursor movement keys.  If you get tired of waiting
  622.         for forever, just press Control-Break to stop any macro.
  623.  
  624.                       A Really Neat Recursive Macro
  625.  
  626.         Here's a really neat recursive macro that you might try with
  627.         cursor sync turned off.  Edit a fairly large file, one with at
  628.         least a 1000 lines, and move the cursor to line 500 or the half
  629.         way point.  Then, split the screen into several vertical windows
  630.         with about 15 columns in each window , e.g.:
  631.  
  632.                 ┌───────┬───────┬────────┬───────┬───────┐
  633.                 │       │       │        │       │       │
  634.                 │       │       │        │       │       │
  635.                 │       │       │        │       │       │
  636.                 │       │       │ start  │       │       │
  637.                 │       │       │        │       │       │
  638.                 │       │       │        │       │       │
  639.                 │       │       │        │       │       │
  640.                 └───────┴───────┴────────┴───────┴───────┘
  641.  
  642.         With cursor sync turned off and macro record turned on, define a
  643.         macro that 1) moves the cursor down in one window, 2) goes to the
  644.         next window and moves the cursor up, 3) goes to the next window
  645.         and moves the cursor down, 4) when the cursor finally makes it
  646.         back to the starting window, make the macro recursive.  Suppose
  647.         the cursor is in the window labeled "start" in the sample screen
  648.         above.  Here's the way the keystrokes in this macro would be
  649.         recorded:
  650.  
  651.  
  652.                 Alt-F3    = turn macro record on
  653.                 Alt-8     = assign this macro to Alt-8
  654.                 Down      = move cursor down in "start" window
  655.                 F10       = next window
  656.                 Up        = move cursor up
  657.                 F10       = next window
  658.                 Down      = move cursor down
  659.                 F10       = next window
  660.                 Down      = move cursor down
  661.                 F10       = next window
  662.                 Up        = move cursor up
  663.                 F10       = next window - cursor is now in "start"
  664.                 Alt-8     = call the macro just defined. it's now recursive.
  665.                 Alt-F3    = turn macro record off
  666.  
  667.         Press Alt-8 and watch a really neat recursive macro.
  668.  
  669.  
  670.    #F1 = Save macro file
  671.         Saves all macro definitions to a file.  TDE prompts for the macro
  672.         file name.
  673.  
  674.    #F3 = Load macro file
  675.         Prompts for a search pattern or file name.  I can never remember
  676.         macro file or path names, so this function uses a file pick list.
  677.  
  678.    ^ESC = Clear macros
  679.         Resets or clears all macros.
  680.  
  681.    ^P  = Pause
  682.         When this function is part of a macro, press any key to continue
  683.         the macro or press ESC to halt or break the macro.
  684.  
  685.  
  686. Find and Search/Replace:
  687.  
  688.    TDE uses the Boyer-Moore search algorithm for finding strings.  Typically,
  689.    the longer the search pattern the faster the search.  So, if you want to
  690.    speed up searches, try searching for longer patterns, e.g. phrases.
  691.  
  692.    ^F5 = Toggle search case
  693.         You can toggle the case of the search flag at any time, even
  694.         after you define the search pattern.
  695.  
  696.    #F5 = find forward
  697.         To define the search pattern, use this function.  It prompts you
  698.         for the search pattern.  The pattern is defined, across files,
  699.         until changed.
  700.  
  701.    #F6 = find backward
  702.         Same as find forward except search backward in file.
  703.  
  704.    F5 = Repeat find forward
  705.         Once the search pattern has been defined (Shift F5 or Shift F6),
  706.         you can press this key at any time in any file to find the next
  707.         occurrence of pattern.  I decided to use two sets of functions to
  708.         perform searches.  Once I found a pattern, I might do some editing
  709.         and then find the next occurrence.  I hate to define the search
  710.         pattern over and over or set the search direction over and over.
  711.         This function does a wrap search - when it reaches the eof it
  712.         starts over at the beginning of the file.
  713.  
  714.    F6 = Repeat find backward
  715.         Like repeat find forward, you can press this key at anytime once
  716.         the search pattern has been defined.
  717.  
  718.    @F5 = Repeat find forward2
  719.         Like F5 except the cursor is not repositioned to the middle of the
  720.         screen.  This function is useful when working with data files.
  721.  
  722.    @F6 = Repeat find backward2
  723.         Like F6 except the cursor is not repositioned to the middle of the
  724.         screen.
  725.  
  726.    #F8 = Replace String
  727.         This function prompts you for the search pattern and the
  728.         replacement text.  It aIso prompts for the replace direction.  If
  729.         you want to match the search case, remember to toggle the search
  730.         flag, which can be done at any time.  You can either do prompt or
  731.         no prompt replacing.   Regardless of prompt or no prompt
  732.         replacing, this function actually moves the cursor to the pattern
  733.         and displays it on the screen and replaces the text. If you are
  734.         using TDE on a slow machine, you can see the search/replace taking
  735.         place.  I implemented the function this way because I just like to
  736.         see what the search/replace function is doing.  Press
  737.         Control-Break to stop no prompt replacing.
  738.  
  739.  
  740. Diff Functions:
  741.  
  742.    #F7 = DefineDiff
  743.         This function initializes diff.  It prompts for the window number
  744.         and letter to diff, ignore leading space, ignore all space, ignore
  745.         blank lines, ignore case, and ignore end of line.  Any two windows
  746.         may be diffed.  Diff only requires that the windows be visible.
  747.  
  748.                                Diff prompts
  749.  
  750.       DIFF:  Enter first window number and letter (e.g. 1a) :
  751.       DIFF:  Enter next window number and letter (e.g. 2a) :
  752.       DIFF:  Start diff at (B)eginning of file or (C)urrent position? (b/c)
  753.       DIFF:  Ignore leading spaces (y/n)?
  754.       DIFF:  Ignore all space (y/n)?
  755.       DIFF:  Ignore blank lines (y/n)?
  756.       DIFF:  Ignore end of line (useful with reformatted paragraphs) (y/n)?
  757.  
  758.     F7 = RepeatDiff
  759.         Once the diff has been defined, press RepeatDiff to find the next
  760.         diff.
  761.  
  762.  
  763. Window Functions:
  764.  
  765.    F8 = Split window vertically
  766.         Splits the screen at the current cursor location.  The current
  767.         file is displayed in multiple windows.  Changes to a file are
  768.         echoed in all windows opened to the same copy of that file.  You
  769.         can also see any marked blocks in the same copy of the file in
  770.         different windows.  There has to be at least 15 columns in any
  771.         window, so the number of visible windows is limited by the display
  772.         screen.
  773.  
  774.    F9 = Split window horizontally
  775.         Splits the screen at the current cursor location.  There has to be
  776.         at least 1 text line in any window, so the number of visible
  777.         windows is limited by the display screen.
  778.  
  779.    #F9 = Resize window
  780.         Sometimes there is a need to concentrate on the contents of one
  781.         window.  Use the up and down arrow keys to adjust the current
  782.         window to desired size.  Changing the size of the top window is
  783.         not allowed.
  784.  
  785.    ^F9 = Zoom window
  786.         Makes the current window fill the whole screen.  All windows
  787.         except the current window become invisible.
  788.  
  789.    F10 = Next window
  790.         If more than one window is displayed, you can press one key to
  791.         move to the next window.
  792.  
  793.    #F10 = Previous window
  794.         Move to previous window - opposite of next window.
  795.  
  796.    ^F10 = Next Hidden Window
  797.         Displays "hidden" or "invisible" windows in the same place as the
  798.         current window.  The current window then becomes invisible.
  799.  
  800.  
  801. Block Commands:
  802.  
  803.   Block operations can be done within or between files.  Operations on
  804.   line blocks that move text are carried out on the line immediately
  805.   below the cursor.  Operations on box or stream blocks that move text
  806.   begin at the column of the cursor.  Press Control-Break to stop most Box
  807.   operations.  Nearly all Line and Stream operations happen so fast that
  808.   you can't stop them once they are started.
  809.  
  810.    @B - Mark Box Block
  811.         This key is used to mark both the beginning and ending corner of
  812.         a box block.
  813.  
  814.    @L - Mark Line Block
  815.         This key is similar to the operation of the box block, but entire
  816.         lines are marked.
  817.  
  818.    @X - Mark Stream Block
  819.         All the text between the beginning and ending column, sorta like a
  820.         stream of characters, is marked.  Useful with sentences.
  821.  
  822.    @U - Unmark Block
  823.         If you make a booboo when marking blocks, press @U to unmark the
  824.         block and start over.  After certain block operations, the block
  825.         may remain marked.
  826.  
  827.    @G - Group Delete block
  828.         Sorta self explanatory.  This function deletes the text in the
  829.         marked block.
  830.  
  831.    @M - Move block
  832.         Move the cursor to the desired location and press @M to move the
  833.         marked block.  In line mode, the text is moved to the line
  834.         immediately below the cursor.  In box and stream mode, the block
  835.         is moved to the column of the cursor.
  836.  
  837.    @C - Copy block
  838.         With line blocks, the block is copied to the line below the
  839.         cursor.  With box and stream blocks, the block is copied
  840.         beginning at the column of the cursor.  If you try to copy a
  841.         Line block within itself, the block copy starts at the first
  842.         line immediately after the marked block.
  843.  
  844.    @K - Kopy block
  845.         Same as copy block except block stays marked.  It's sorta like a
  846.         poor man's cut-and-paste buffer.
  847.  
  848.    @O - Overlay block
  849.         You can only overlay Box blocks.  The original block stays marked
  850.         after the operation.
  851.  
  852.    @F - Fill box block
  853.         Fills the marked Box block with character.  This function is
  854.         useful for filling in a column of periods for tables and such.
  855.  
  856.    @N - Number box block
  857.         TDE prompts you for the starting number, the increment, and
  858.         whether to left or right justify the numbers.  TDE only handles
  859.         integers  -  no floating point numbers are allowed.  I felt that
  860.         there were too many things involved in real numbers, eg. number
  861.         of significant places to left of decimal, to right of decimal,
  862.         exponents, engineering form, scientific form, etc....  If you
  863.         want real numbers, just use a combination of the number box
  864.         and fill box functions.  Use the fill box function to make a
  865.         column of decimals and the number box function to number the left
  866.         and right side of the decimal.
  867.  
  868.    @P - Print block
  869.         Prints the block to the PRN device.  I haven't tried redirecting
  870.         the PRN, but it should work.  This function prompts for block or
  871.         file to print.  Press Control-Break to stop printing.
  872.  
  873.    @S - Sort box block
  874.         Lines are sorted, ascending or descending, using the contents of
  875.         the box block as the sort keys.  The Ignore/Match toggle
  876.         determines whether case of the keys is significant.  To sort
  877.         multiple columns, sort the least significant column first.  Press
  878.         Control-Break to stop.
  879.  
  880.   #@S - Swap block
  881.         Swap block only works with BOX blocks.  The area to be swapped
  882.         is assumed to be the width of the BOX block.  Make sure the
  883.         cursor is at the top left corner of the area to swap before
  884.         swapping.
  885.  
  886.    @W - Write block to file
  887.         Writes the marked block to a file.  TDE prompts for the file
  888.         name.
  889.  
  890.    @E - Block expand tabs
  891.         Expands the tabs in the marked block, which must be a LINE block,
  892.         using the current tab setting.  Press Control-Break to stop.
  893.  
  894.    @T - Block trim trailing
  895.         Trims trailing space, if any, at the end of each line in a LINE
  896.         block.  Press Control-Break to stop.
  897.  
  898.    @< - Block upper case
  899.         Convert all lower case characters in the block to upper case.
  900.         Our old IBM mainframe line printers can only print upper case.
  901.  
  902.    @> - Block lower case
  903.         Convert all upper case characters in the block to lower case.
  904.  
  905.    @? - Block strip high bit
  906.         Strip the high bit off all characters in the block.  This function
  907.         is useful when editing files produced by WordStar.
  908.  
  909.    #@< - BlockRot13
  910.         Convert all alpha characters in a block using ROT13.
  911.  
  912.    #@> - BlockFixUUE
  913.         Fixes the EBCDIC to ASCII problem with text e-mail.
  914.  
  915.    #@? - BlockEmailReply
  916.         Prepends the customary "> " or ">" to e-mail replies to lines in a
  917.         LINE block.
  918.  
  919.  
  920. Word Processing Commands:
  921.  
  922.    @V - toggle word wrap
  923.         Toggle word wrap between off, Fixed Wrap, and Dynamic Wrap.  In
  924.         Fixed Wrap mode, the left margin is explicitly determined by the
  925.         left margin setting.  In Dynamic Wrap mode, the left margin is
  926.         determined by the indentation of the current line.  Writers may
  927.         find the Dynamic Wrap mode easier to use.  If the cursor is
  928.         somewhere in the line, words are pushed to the next line.
  929.  
  930.         In TDE, other than margins, word wrap and format paragraph or
  931.         format text have nothing to do with each other.  Word wrap is
  932.         used to push characters or the cursor to the next line when the
  933.         right margin is violated.  Format paragraph and format text can
  934.         be used at any time - they do not depend on the state of the
  935.         WordWrap flag.
  936.  
  937.   ^F6 - Set Left margin
  938.         May be set to any column equal to or greater than 1 and less than
  939.         the right margin.
  940.  
  941.   ^F7 - Set Right margin
  942.         May be set to any column greater than the left margin and less
  943.         than the maximum line length or 1040.
  944.  
  945.   ^F8 - Set Paragraph margin
  946.         The paragraph margin may be set to any column less than the right
  947.         margin.
  948.  
  949.   @F7 - format paragraph
  950.         Text is formatted from the beginning of the paragraph according
  951.         to the current left, right, and paragraph margins.  If the cursor
  952.         is not on the beginning line of a paragraph, TDE searches for
  953.         start of the paragraph and formatting starts there.  The entire
  954.         paragraph is formatted according to the margins.
  955.  
  956.   ^B - Format Text
  957.         Text is formatted from the cursor onward.  This function does not
  958.         search for the beginning of the paragraph to start the format.
  959.  
  960.   @F8 - Left justify
  961.         Beginning of current line is adjusted to start at left margin
  962.  
  963.   @F9 - Right justify
  964.         End of current line is adjusted so it ends at the right margin
  965.  
  966.  @F10 - Center justify
  967.         Current line is centered between the left and right margins.
  968.  
  969.  
  970. Tabs:
  971.  
  972.    Tab
  973.         If in insert mode, insert the appropriate number of spaces for a
  974.         tab and move the cursor left.  If in overwrite mode, just move
  975.         the cursor left w/o inserting text.
  976.  
  977.   #Tab
  978.         Move cursor to previous tab.
  979.  
  980.   ^Tab
  981.         Set ptabs and ltabs.
  982.  
  983.   @Tab
  984.         Toggle smart tab mode.  Smart tab positions are determined by
  985.         looking for the first, previous, non-blank line above the cursor
  986.         and then positioning the cursor at the begining of the next or
  987.         previous word from the column of the cursor.  It's useful for
  988.         building tables and formatted data files.
  989.  
  990.    #@T
  991.         Toggle TabInflate mode.  In TabInflate mode, tabs are not
  992.         physically expanded.  Tabs are filled with space to give the
  993.         illusion of physical expansion.
  994.  
  995.  
  996. Toggles:
  997.  
  998.    ^F1
  999.         Toggle cursor sync.  Only cursor movement commands are synced.
  1000.         Commands that change text are not synced.
  1001.  
  1002.    ^F2
  1003.         Toggle eol display.  A special character is displayed in the
  1004.         column of the actual new line.
  1005.  
  1006.    ^F3
  1007.         Toggle writing <CR><LF> or <LF> at end of line.  TDE will read a
  1008.         text file with lines that end in either method; however, you may
  1009.         want to write the file in a different method.  I think *nix
  1010.         systems only want a <LF> of the end of line.
  1011.  
  1012.    ^F4
  1013.         Toggle trimming trailing space at the end of line.  A 'T' is
  1014.         displayed in the bottom right of the mode line to indicate
  1015.         trailing space is trimmed.
  1016.  
  1017.    ^F5 = Toggle search or sort case
  1018.         You can toggle the case flag at any time, even after you define
  1019.         the search pattern.
  1020.  
  1021.    Ins
  1022.         Toggle between insert and overwrite mode.
  1023.  
  1024.    @I
  1025.         Toggle between indent and no indent mode.  In indent mode, TDE
  1026.         searches for the first non-blank character on previous lines and
  1027.         places the cursor on that column when a carriage return is
  1028.         pressed.  When backspacing in indent mode, TDE lines up the
  1029.         indentation with the first non-blank character of the previous
  1030.         line(s).
  1031.  
  1032.    @R - Toggle ruler
  1033.         Toggle display of ruler in all visible windows.
  1034.  
  1035.    @V - toggle word wrap
  1036.         Toggle word wrap between Off, Fixed Wrap, and Dynamic Wrap.
  1037.  
  1038.    @Z
  1039.         Toggle writing Control Z at the end of file.  Some programs may
  1040.         misbehave if a Control Z is not at the end of the file.
  1041.  
  1042.  
  1043. Other keys:
  1044.  
  1045.    Enter
  1046.         Insert a newline at the cursor.  If the cursor is in the middle of
  1047.         a line, the line is split at the cursor.  Indentation is matched
  1048.         if the editor is in the Indent mode.
  1049.  
  1050.    #Enter
  1051.         Move the cursor down a line.  The cursor is placed on the first
  1052.         non-blank character in the next line.  No lines are added to the
  1053.         file.
  1054.  
  1055.    ^Enter
  1056.         Move the cursor down a line.  The cursor is placed on column 1 in
  1057.         the next line.  No lines are added to the file.
  1058.  
  1059.    Up (arrow)
  1060.         Move cursor up.
  1061.  
  1062.    Down (arrow)
  1063.         Move cursor down.
  1064.  
  1065.    Left (arrow)
  1066.         Move cursor left.
  1067.  
  1068.    Right (arrow)
  1069.         Move cursor right.
  1070.  
  1071.    Home
  1072.         Toggles between the first non-blank character and column zero.
  1073.  
  1074.    End
  1075.         Move cursor to the end of line character.
  1076.  
  1077.    Page Up
  1078.         Move cursor up one page.
  1079.  
  1080.    Page Down
  1081.         Move cursor down one page.
  1082.  
  1083.    ^Right
  1084.         Move cursor one word right.
  1085.  
  1086.    ^Left
  1087.         Move cursor one word left.
  1088.  
  1089.    ^#Right   (Control+Shift+Right)
  1090.         Pan the screen one character to the right.
  1091.  
  1092.    ^#Left    (Control+Shift+Left)
  1093.         Pan the screen one character to the left.
  1094.                                                 
  1095.    ^Home
  1096.         Move cursor to first line on screen.
  1097.  
  1098.    ^End
  1099.         Move cursor to last line on screen.
  1100.  
  1101.    ^Page Up
  1102.         Move cursor to first page in file.
  1103.  
  1104.    ^Page Down
  1105.         Move cursor to last page in file.
  1106.  
  1107.    Zip to line
  1108.         Move to line number.  TDE prompts for line number.  Press Escape
  1109.         to abort.
  1110.  
  1111.    Center
  1112.         The cursor is moved to the center of the current window.
  1113.  
  1114.   ^Center
  1115.         The line the cursor is on is moved to the center of the current
  1116.         window.
  1117.  
  1118.    Grey -  (on the key pad) or
  1119.    ^Down
  1120.         Scroll window up with cursor staying on same line in file.
  1121.  
  1122.    Grey +  (on the key pad) or
  1123.    ^Up
  1124.         Scroll window down with cursor staying on same line in file.
  1125.  
  1126.   @Grey Up (the arrow in the cursor/control cluster) or
  1127.   ^Grey -  (grey - on keypad)
  1128.         Cursor stays on same line of the screen as the file scrolls up.
  1129.  
  1130.   @Grey Down (the arrow in the cursor/control cluster) or
  1131.   ^Grey +  (grey + on keypad)
  1132.         Cursor stays on same line of the screen as the file scrolls down.
  1133.  
  1134.   @Grey PgUp
  1135.         Horizontal page left.
  1136.  
  1137.   @Grey PgDn
  1138.         Horizontal page right.
  1139.  
  1140.    ESC - undo line
  1141.         Get back the original unchanged line.  When cursor is moved off a
  1142.         line, all changes to the file are made and there is no way to get
  1143.         back the contents of a line.
  1144.  
  1145.    Del
  1146.         Delete the character, if any, under the cursor.
  1147.  
  1148.    ^Del
  1149.         Delete the characters in the file as if they were a stream.
  1150.         Lines will be joined at the cursor and eventually every
  1151.         character in the file may be deleted.
  1152.  
  1153.    Backspace
  1154.         Delete the character to the left of the cursor and move left.  If
  1155.         the cursor is on the first column of a line, the current line is
  1156.         joined with the line above.  If in indent mode and the cursor is
  1157.         on the first non-blank character, TDE matches the indentation of
  1158.         the previous line(s).
  1159.  
  1160.    @=
  1161.         Duplicates the current line.
  1162.  
  1163.    @-
  1164.         Deletes the text from the cursor to the end of line.
  1165.  
  1166.    ^Y
  1167.         Deletes current line, cursor does not move.
  1168.  
  1169.    @D
  1170.         Deletes current line, cursor does not move (exactly same as ^Y).
  1171.  
  1172.    @Y  or  ^U
  1173.         Undelete the most recently deleted line.  The undelete buffer has
  1174.         room for 10k of deleted text.  If more than 10k of text is
  1175.         deleted, the oldest line(s) are pushed out before the new one is
  1176.         added.  You may press ^U repeatedly to undelete all lines in the
  1177.         buffer.
  1178.  
  1179.         Deleted lines from line delete, delete to end of line, word
  1180.         delete, join line, and backspace are stored in the undelete
  1181.         buffer.
  1182.  
  1183.    @A
  1184.         Add a blank line below cursor.
  1185.  
  1186.    ^_  or Control underline
  1187.         Split line at column of cursor.  If in indent mode, the split line
  1188.         is autoindented.
  1189.  
  1190.    @J
  1191.         Join the current line with the line below.
  1192.  
  1193.    ^]
  1194.         Paren Balance.
  1195.  
  1196.    @1 - @3
  1197.         Set a file marker.  Each file may have up to 3 markers.
  1198.  
  1199.    #@1 - #@3    (Shift+Alt+1 thru Shift+Alt+3)
  1200.         Goto a previously defined file marker.
  1201.  
  1202.  
  1203.    ^@  (Control+At sign -- not Control+Alt.  Control+At sign is the first
  1204.           character in the ASCII character set, Control+2 on many keyboards)
  1205.         Writes the current system date and time at the column of the
  1206.         cursor.  Use tdecfg to set the desired year and time format.
  1207.  
  1208.    Control-Break
  1209.         In TDE, Control-Break will stop printing, sorting,
  1210.         search/replacing, and recursive macros.
  1211.  
  1212.  
  1213.  
  1214. WordStar style commands:
  1215.  
  1216.   A limited number of WordStar style commands are implemented in TDE.  I
  1217.   have no plans, whatsoever, to implement any additional WordStar style
  1218.   commands.  This implementation may not correspond exactly to the
  1219.   WordStar command convention.  WordStar is a trademark of WordStar
  1220.   International.
  1221.  
  1222.    ^A - word left
  1223.    ^B - format text
  1224.    ^C - screen down
  1225.    ^D - character right
  1226.    ^E - line up
  1227.    ^F - word right
  1228.    ^G - delete character
  1229.    ^H - backspace
  1230.    ^I - tab
  1231.    ^J - help
  1232.    ^K - n/a
  1233.    ^L - n/a
  1234.    ^M - return (carriage control, enter)
  1235.    ^N - add line below cursor
  1236.    ^O - n/a
  1237.    ^P - n/a
  1238.    ^Q - n/a
  1239.    ^R - page up
  1240.    ^S - character left
  1241.    ^T - word delete
  1242.    ^U - undelete line
  1243.    ^V - toggle insert mode
  1244.    ^W - scroll up line
  1245.    ^X - line down
  1246.    ^Y - delete line
  1247.    ^Z - scroll line down
  1248.    ^\ - redraw screen
  1249.  
  1250.  
  1251. Editor command summary:
  1252.  
  1253.    Function                      Description
  1254.  
  1255. Help                    Display instantaneous help screen
  1256. Rturn                   Insert newline and move down while matching indentation
  1257. NextLine                Move cursor to first character in next line
  1258. BegNextLine             Move cursor to first column in next line
  1259. LineDown                Move cursor down a line
  1260. LineUp                  Move cursor up a line
  1261. CharRight               Move cursor right one character
  1262. CharLeft                Move cursor left one character
  1263. PanRight                Pan screen one character right
  1264. PanLeft                 Pan screen one character left
  1265. WordRight               Move cursor to beginning of next word
  1266. WordLeft                Move cursor to beginning of previous word
  1267. ScreenDown              Page screen down
  1268. ScreenUp                Page screen up
  1269. EndOfFile               Move to the last page in a file
  1270. TopOfFile               Move to the first page in a file
  1271. BotOfScreen             Move cursor to bottom of current window
  1272. TopOfScreen             Move cursor to top of current window
  1273. EndOfLine               Move cursor to end of line
  1274. BegOfLine               Move cursor to first character in line or column 1
  1275. JumpToLine              Move cursor to line entered by user
  1276. CenterWindow            Move cursor to center of current window
  1277. CenterLine              Move current line and cursor to center of window
  1278. HorizontalScreenRight   Page screen right
  1279. HorizontalScreenLeft    Page screen left
  1280. ScrollDnLine            Scroll screen down 1 line and cursor moves with line
  1281. ScrollUpLine            Scroll screen up 1 line and cursor moves with line
  1282. PanUp                   Scroll screen up 1 line and cursor does not move
  1283. PanDn                   Scroll screen down 1 line and cursor does not move
  1284. ToggleOverWrite         Toggle insert/overwrite mode and cursor changes shape
  1285. ToggleSmartTabs         Toggle smart tab mode on/off
  1286. ToggleIndent            Toggle indent mode on/off
  1287. ToggleWordWrap          Toggle word wrap on/off
  1288. ToggleCRLF              Toggle CRLF/LF at eol when writing file to disk
  1289. ToggleTrailing          Toggle trim trailing space at eol
  1290. ToggleZ                 Toggle writing ^Z at eof
  1291. ToggleEol               Toggle display of eol character
  1292. ToggleSync              Toggle cursor sync
  1293. ToggleRuler             Toggle ruler display
  1294. ToggleTabInflate        Toggle expanding tabs in display
  1295. SetTabs                 Set file tabs
  1296. SetLeftMargin           Set left margin
  1297. SetRightMargin          Set right margin
  1298. SetParagraphMargin      Set paragraph margin
  1299. FormatParagraph         Format the entire paragraph according to margins
  1300. FormatText              Format from the cursor line to end of paragraph
  1301. LeftJustify             Left justify a line
  1302. RightJustify            Right justify a line
  1303. CenterJustify           Center justify a line
  1304. Tab                     Move cursor to next tab and add spaces if insert mode
  1305. BackTab                 Move cursor to previous tab and delete if insert mode
  1306. ParenBalance            Match (), {}, or [] under the cursor
  1307. BackSpace               Delete previous character
  1308. DeleteChar              Delete current character, but do not join lines
  1309. StreamDeleteChar        Delete current character and join lines if at eol
  1310. DeleteLine              Delete current line
  1311. DelEndOfLine            Delete from the cursor to the eol
  1312. WordDelete              Delete from the cursor to the end of word
  1313. AddLine                 Insert a blank line under the cursor
  1314. SplitLine               Split the current line at the cursor
  1315. JoinLine                Join next line with current line at the cursor
  1316. DuplicateLine           Duplicate the current line
  1317. AbortCommand            Abort editor functions
  1318. UndoLine                Get back the original contents of a line
  1319. UndoDelete              Get back up to the last 10k of deleted text
  1320. ToggleSearchCase        Toggle match/ignore search case or sort case
  1321. FindForward             Prompt for pattern and search forward
  1322. FindBackward            Prompt for pattern and search backward
  1323. RepeatFindForward1      Repeat find forward and adjust cursor if needed
  1324. RepeatFindForward2      Repeat find forward and do not adjust cursor
  1325. RepeatFindBackward1     Repeat find backward and adjust cursor if needed
  1326. RepeatFindBackward2     Repeat find backward and do not adjust cursor
  1327. ReplaceString           Search and replace pattern forward/backward
  1328. DefineDiff              Define starting diff options
  1329. RepeatDiff              Find the next diff
  1330. MarkBox                 Mark start or end of a box block
  1331. MarkLine                Mark start or end of a line block
  1332. MarkStream              Mark start or end of a stream block
  1333. UnMarkBlock             Unmark a block
  1334. FillBlock               Fill a box block with prompted character
  1335. NumberBlock             Fill a box block with starting number using increment
  1336. CopyBlock               Copy a block to cursor and unmark block
  1337. KopyBlock               Copy a block to cursor and leave block marked
  1338. MoveBlock               Move a block to cursor and unmark block
  1339. OverlayBlock            Overlay a box block
  1340. DeleteBlock             Delete a block
  1341. SwapBlock               Swap contents of BOX block w/ cursor
  1342. BlockToFile             Write a marked block to a file
  1343. PrintBlock              Print a block or file
  1344. BlockExpandTabs         Expand tabs in marked LINE block using tab setting
  1345. BlockCompressTabs       Compress space to tabs in LINE block
  1346. BlockIndentTabs         Compress leading space to tabs in LINE block
  1347. BlockTrimTrailing       Trim trailing space from all lines in a line block
  1348. BlockUpperCase          Convert all lower case in block to upper case
  1349. BlockLowerCase          Convert all upper case in block to lower case
  1350. BlockRot13              Rotate alpha characters by 13
  1351. BlockFixUUE             Fix the ASCII-EBCDIC translation problem
  1352. BlockEmailReply         Prepend '>' to included mail blocks
  1353. BlockStripHiBit         Strip the high bit from all characters in block
  1354. SortBoxBlock            Sort line according to keys in box block
  1355. DateTimeStamp           Insert system time and date
  1356. EditFile                Editor prompts for file to edit
  1357. DirList                 List matching files in subdirectories
  1358. File                    Save file and quit window
  1359. Save                    Save file
  1360. SaveAs                  Save file under a new file name
  1361. SetFileAttributes       Set current file attributes
  1362. EditNextFile            Edit next file on command line
  1363. DefineSearchAndSeize    Initial pattern and search files
  1364. RepeatSearchAndSeize    Search and load next file that contains pattern
  1365. RedrawScreen            Redraw the screen
  1366. SizeWindow              Change size of current window
  1367. SplitHorizontal         Split current window horizontally
  1368. SplitVertical           Split current window vertically
  1369. NextWindow              Move to next window
  1370. PreviousWindow          Move to previous window
  1371. ZoomWindow              Make current window the maximum window size
  1372. NextHiddenWindow        Switch to next hidden window
  1373. SetMark1                Set a file marker
  1374. SetMark2
  1375. SetMark3
  1376. GotoMark1               Move cursor to previously defined marker
  1377. GotoMark2
  1378. GotoMark3
  1379. RecordMacro             Record keystrokes
  1380. PlayBack                Used in config file - play back keystrokes
  1381. SaveMacro               Save macro to a file
  1382. LoadMacro               Load macro from a file
  1383. ClearAllMacros          Clear the macro buffer
  1384. Pause                   Pause a macro
  1385. Quit                    Quit current window and file and abandon changes
  1386.